package Day003_多态_内部类.demo006内部类;

public class Body { //外部类
    //成员变量
    private int num1 = 10;
    //成员方法
    private void methodW1(){
        System.out.println("外部类成员方法method1");
    }
    //2.在外部类中不可以直接访问内部类一切成员,必须创建内部类对象
    public void methodW2(){
        //System.out.println("内部类num1" + num2); //编译报错
        //methodN1(); //编译报错

        //外部类名.内部类名 对象名 = new 外部类().new 内部类();   可以再测试类中使用!
        Body.Heart bh = new Body().new Heart();
        System.out.println(bh.num2);
        bh.methodN1();

        //直接创建内部类对象也可以,但是不能再测试类中使用!
        Heart h = new Heart();
        System.out.println(h.num2);
        h.methodN1();
    }






    public class Heart{ //内部类
        //成员变量
        int num2 = 20;
        //成员方法
        public void methodN1(){
            System.out.println("内部类成员方法method2");
            //1.在内部类中可以直接访问外部类一切成员,包括私有成员
            System.out.println("外部类num1" + num1);
            methodW1();
        }

    }
}
